<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>systemd
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>systemd 中文手册</h1><h2 id="auth_name">译者：<strong><a href="http://www.jinbuguo.com/">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="http://www.jinbuguo.com/">金步国作品集</a> [ <a href="http://www.jinbuguo.com/">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="systemd"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>systemd, init — systemd 系统与服务管理器</p></div><div class="refsynopsisdiv"><h2>大纲</h2><div class="cmdsynopsis"><p><code class="command">/usr/lib/systemd/systemd</code>  [OPTIONS...]</p></div><div class="cmdsynopsis"><p><code class="command">init</code>  [OPTIONS...] {COMMAND}</p></div></div><div class="refsect1"><a name="id-1.5"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="systemd.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p>systemd 是一个专用于 Linux 操作系统的系统与服务管理器。
    当作为启动进程(PID=1)运行时，
    它将作为初始化系统运行，
    也就是启动并维护各种用户空间的服务。</p><p>为了与传统的 SysV 兼容，如果将 systemd 以
    <span class="command"><strong>init</strong></span> 名称启动，并且"PID≠1"，那么它将执行
    <span class="command"><strong>telinit</strong></span> 命令并将所有命令行参数原封不动的传递过去。
    这样对于普通的登录会话来说，无论是调用 <span class="command"><strong>init</strong></span> 还是调用
    <span class="command"><strong>telinit</strong></span> 都是等价的。
    详见
    <a href="http://www.jinbuguo.com/systemd/telinit.html#"><span class="citerefentry"><span class="refentrytitle">telinit</span>(8)</span></a>
    手册。</p><p>当作为系统实例运行时，
    systemd 将会按照 <code class="filename">system.conf</code> 配置文件
    以及 <code class="filename">system.conf.d</code> 配置目录中的指令工作；
    当作为用户实例运行时，systemd 将会按照
    <code class="filename">user.conf</code> 配置文件
    以及 <code class="filename">user.conf.d</code> 配置目录中的指令工作。详见
    <a href="systemd-system.conf.html#"><span class="citerefentry"><span class="refentrytitle">systemd-system.conf</span>(5)</span></a>
    手册。</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="选项">选项<a class="headerlink" title="Permalink to this headline" href="systemd.html#%E9%80%89%E9%A1%B9">¶</a></h2><p>能够识别的命令行选项如下：</p><div class="variablelist"><dl class="variablelist"><dt id="--test"><span class="term"><code class="option">--test</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--test">¶</a></dt><dd><p>检测并输出启动序列，然后退出。
        仅用于调试目的。</p></dd><dt id="--dump-configuration-items"><span class="term"><code class="option">--dump-configuration-items</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--dump-configuration-items">¶</a></dt><dd><p>输出一个单元(unit)列表。
        此列表简明且完整的列出了
        所有单元文件中定义的"unit"。</p></dd><dt id="--dump-bus-properties"><span class="term"><code class="option">--dump-bus-properties</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--dump-bus-properties">¶</a></dt><dd><p>转储 D-Bus 公开属性。
        输出一个简洁但完整的 D-Bus 公开属性列表。
        </p></dd><dt id="--unit="><span class="term"><code class="option">--unit=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--unit=">¶</a></dt><dd><p>设置启动时默认启动的单元(unit)。
        默认值是
        <code class="filename">default.target</code></p></dd><dt id="--system"><span class="term"><code class="option">--system</code>, </span><span class="term"><code class="option">--user</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--system">¶</a></dt><dd><p><code class="option">--system</code>
        表示强制作为系统实例运行(即使"PID≠1")，
        <code class="option">--user</code>
        表示强制作为用户实例运行(即使"PID=1")。
        通常不应该使用此选项。
        此选项仅用于调试目的，
        而且
        <code class="option">--system</code>
        仅在与
        <code class="option">--test</code>
        一起使用时
        才有实际意义。</p></dd><dt id="--dump-core"><span class="term"><code class="option">--dump-core</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--dump-core">¶</a></dt><dd><p>在崩溃时进行内存转储。
        当作为用户实例运行时，此选项没有实际意义。
        此选项还可以通过内核引导选项
        <code class="varname">systemd.dump_core=</code> 开启
        (参见"内核引导选项"小节)。</p></dd><dt id="--crash-vt=VT"><span class="term"><code class="option">--crash-vt=</code><em class="replaceable"><code>VT</code></em></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--crash-vt=VT">¶</a></dt><dd><p>在崩溃时
        切换到指定的虚拟控制台(VT)。
        当作为用户实例运行时，此选项没有实际意义。
        可以设为一个 1–63 之间的整数或布尔值。
        若设为整数则切换到指定编号的虚拟控制台；
        若设为 <code class="constant">yes</code> 则表示使用内核消息所使用的虚拟控制台；
        若设为 <code class="constant">no</code> 则表示不切换到任何虚拟控制台。
        此选项还可以通过内核引导选项
        <code class="varname">systemd.crash_vt=</code> 设置

        (参见"内核引导选项"小节)。</p></dd><dt id="--crash-shell"><span class="term"><code class="option">--crash-shell</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--crash-shell">¶</a></dt><dd><p>在崩溃时启动一个 shell 。
        当作为用户实例运行时，此选项没有实际意义。
        此选项还可以通过内核引导选项
        <code class="varname">systemd.crash_shell=</code> 开启
        (参见"内核引导选项"小节)。</p></dd><dt id="--crash-reboot"><span class="term"><code class="option">--crash-reboot</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--crash-reboot">¶</a></dt><dd><p>在崩溃时自动重启系统。
        当作为用户实例运行时，此选项没有实际意义。
        此选项还可以通过内核引导选项
        <code class="varname">systemd.crash_reboot=</code> 开启
        (参见"内核引导选项"小节)。</p></dd><dt id="--confirm-spawn"><span class="term"><code class="option">--confirm-spawn</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--confirm-spawn">¶</a></dt><dd><p>在派生新进程时进行确认提示。
        当作为用户实例运行时，
        此选项没有实际意义。</p></dd><dt id="--show-status="><span class="term"><code class="option">--show-status=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--show-status=">¶</a></dt><dd><p>设置是否显示单元状态信息。接受一个布尔值或特殊值 <code class="constant">auto</code> 。
        设为 yes 表示在系统启动与关闭的过程中，在控制台上显示简明的单元状态信息。
        设为 no 表示不显示这些信息。
        设为 <code class="constant">auto</code> 与 no 类似，不同之处在于，一旦遇见单元失败或启动流程出现重大延迟，立即自动切换为 yes 设置。
        当作为用户实例运行时，此选项没有实际意义。此选项将会覆盖内核引导选项
        <code class="varname">systemd.show_status=</code>(见后文) 以及配置文件中
        <code class="option">ShowStatus=</code> 的设置。参见
        <a href="systemd-system.conf.html#"><span class="citerefentry"><span class="refentrytitle">systemd-system.conf</span>(5)</span></a> 手册。</p></dd><dt id="--log-target="><span class="term"><code class="option">--log-target=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--log-target=">¶</a></dt><dd><p>设置日志的目标，其参数必须是
        <code class="option">console</code>,
        <code class="option">journal</code>,
        <code class="option">kmsg</code>,
        <code class="option">journal-or-kmsg</code>,
        <code class="option">null</code> 之一(小写)。</p></dd><dt id="--log-level="><span class="term"><code class="option">--log-level=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--log-level=">¶</a></dt><dd><p>设置日志的等级，
        其参数必须是一个数字或者
        符合 <a href="http://man7.org/linux/man-pages/man3/syslog.3.html"><span class="citerefentry"><span class="refentrytitle">syslog</span>(3)</span></a>
        习惯的
        <code class="option">emerg</code>,
        <code class="option">alert</code>,
        <code class="option">crit</code>,
        <code class="option">err</code>,
        <code class="option">warning</code>,
        <code class="option">notice</code>,
        <code class="option">info</code>,
        <code class="option">debug</code> 之一(小写)。</p></dd><dt id="--log-color="><span class="term"><code class="option">--log-color=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--log-color=">¶</a></dt><dd><p>高亮重要的日志信息，其参数必须是一个表示真假的布尔值，
        若未指定则相当于设为
        <code class="option">yes</code></p></dd><dt id="--log-location="><span class="term"><code class="option">--log-location=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--log-location=">¶</a></dt><dd><p>在日志中包含代码的位置，
        其参数必须是一个表示真假的布尔值，
        若未指定则相当于设为
        <code class="option">yes</code> 。仅用于调试目的。</p></dd><dt id="--default-standard-output="><span class="term"><code class="option">--default-standard-output=</code>, </span><span class="term"><code class="option">--default-standard-error=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--default-standard-output=">¶</a></dt><dd><p>为所有的 service 与 socket 设置默认的标准输出与标准错误，
        相当于设置
        <code class="option">StandardOutput=</code> 与
        <code class="option">StandardError=</code> 指令的值(参见
        <a href="systemd.exec.html#"><span class="citerefentry"><span class="refentrytitle">systemd.exec</span>(5)</span></a>
        手册)。其参数必须是
        <code class="option">inherit</code>,
        <code class="option">null</code>,
        <code class="option">tty</code>,
        <code class="option">journal</code>,
        <code class="option">journal+console</code>,
        <code class="option">syslog</code>,
        <code class="option">syslog+console</code>,
        <code class="option">kmsg</code>,
        <code class="option">kmsg+console</code>
        之一(小写)。
        <code class="option">--default-standard-output=</code> 的默认值是
        <code class="option">journal</code> ；而
        <code class="option">--default-standard-error=</code> 的默认值是
        <code class="option">inherit</code></p></dd><dt id="--machine-id="><span class="term"><code class="option">--machine-id=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--machine-id=">¶</a></dt><dd><p>覆盖文件系统上的 machine-id 设置，
        常用于网络启动或容器。
        禁止设为全零的值。</p></dd><dt id="--service-watchdogs="><span class="term"><code class="option">--service-watchdogs=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--service-watchdogs=">¶</a></dt><dd><p>全局性的启用/禁用所有服务的看门狗超时与紧急动作。
        默认值为 yes (启用)。
        此选项等价于 <code class="varname">systemd.service_watchdogs=</code> 内核命令行参数。
        详见后文。</p></dd><dt id="-h"><span class="term"><code class="option">-h</code>, </span><span class="term"><code class="option">--help</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#-h">¶</a></dt><dd><p><a name="help-text"></a>显示简短的帮助信息并退出。
    </p></dd><dt id="--version"><span class="term"><code class="option">--version</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#--version">¶</a></dt><dd><p><a name="version-text"></a>显示简短的版本信息并退出。</p></dd></dl></div></div><div class="refsect1"><a name="id-1.7"></a><h2 id="概念">概念<a class="headerlink" title="Permalink to this headline" href="systemd.html#%E6%A6%82%E5%BF%B5">¶</a></h2><p>systemd 将各种系统启动和运行相关的对象，
    表示为各种不同类型的单元(unit)，
    并提供了
    处理不同单元之间依赖关系的能力。
    大部分单元都静态的定义在单元文件中
    (参见
    <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a>
    手册)，
    但是有少部分单元则是动态自动生成的：
    其中一部分来自于其他传统的配置文件(为了兼容性)，
    而另一部分则动态的来自于系统状态或可编程的运行时状态。
    单元既可以处于活动(active)状态也可以处于停止(inactive)状态，
    当然也可以处于启动中(activating)或停止中(deactivating)的状态。
    还有一个特殊的失败(failed)状态，
    意思是单元以某种方式失败了
    (退出时返回了错误代码、进程崩溃、操作超时、触碰启动频率限制)。
    当进入失败(failed)状态时，
    导致故障的原因
    将被记录到日志中以方便日后排查。
    需要注意的是，
    不同的单元可能还会有各自不同的"子状态"，
    但它们都被映射到上述五种状态之一。</p><p>各种不同的单元类型如下：</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>service 单元。用于封装一个后台服务进程。
      参见
      <a href="systemd.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd.service</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>socket 单元。
      用于封装一个系统套接字(UNIX)或互联网套接字(INET/INET6)或FIFO管道。
      相应的服务在第一个"连接"进入套接字时才会被启动。
      有关套接字单元的详情，参见
      <a href="systemd.socket.html#"><span class="citerefentry"><span class="refentrytitle">systemd.socket</span>(5)</span></a>
      手册；有关基于套接字或其他方式的启动，参见
      <a href="daemon.html#"><span class="citerefentry"><span class="refentrytitle">daemon</span>(7)</span></a> 手册。</p></li><li class="listitem"><p>target 单元。
      用于将多个单元在逻辑上组合在一起。参见
      <a href="systemd.target.html#"><span class="citerefentry"><span class="refentrytitle">systemd.target</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>device 单元。用于封装一个设备文件，可用于基于设备的启动。
      并非每一个设备文件都需要一个 device 单元，
      但是每一个被 udev 规则标记的设备都必须作为一个 device 单元出现。参见
      <a href="systemd.device.html#"><span class="citerefentry"><span class="refentrytitle">systemd.device</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>mount 单元。
      用于封装一个文件系统挂载点(也向后兼容传统的 /etc/fstab 文件)。参见
      <a href="systemd.mount.html#"><span class="citerefentry"><span class="refentrytitle">systemd.mount</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>automount 单元。
      用于封装一个文件系统自动挂载点，也就是仅在挂载点确实被访问的情况下才进行挂载。
      它取代了传统的 autofs 服务。参见
      <a href="systemd.automount.html#"><span class="citerefentry"><span class="refentrytitle">systemd.automount</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>timer 单元。
      用于封装一个基于时间触发的动作。它取代了传统的 atd, crond 等任务计划服务。参见
      <a href="systemd.timer.html#"><span class="citerefentry"><span class="refentrytitle">systemd.timer</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>swap 单元。
      用于封装一个交换分区或者交换文件。
      它与 mount 单元非常类似。参见
      <a href="systemd.swap.html#"><span class="citerefentry"><span class="refentrytitle">systemd.swap</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>path 单元。
      用于根据文件系统上特定对象的变化来启动其他服务。参见
      <a href="systemd.path.html#"><span class="citerefentry"><span class="refentrytitle">systemd.path</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>slice 单元。
      用于控制特定 CGroup 内(例如一组 service 与 scope 单元)所有进程的总体资源占用。
      参见
      <a href="systemd.slice.html#"><span class="citerefentry"><span class="refentrytitle">systemd.slice</span>(5)</span></a> 手册。</p></li><li class="listitem"><p>scope 单元。它与 service 单元类似，但是由 systemd 根据 D-bus 接口接收到的信息自动创建，
      可用于管理外部创建的进程。参见
      <a href="systemd.scope.html#"><span class="citerefentry"><span class="refentrytitle">systemd.scope</span>(5)</span></a> 手册。</p></li></ol></div><p>单元的名称由单元文件的名称决定，
    某些特定的单元名称具有特殊的含义，详情参见
    <a href="systemd.special.html#"><span class="citerefentry"><span class="refentrytitle">systemd.special</span>(7)</span></a> 手册。</p><p>systemd 能够处理各种类型的依赖关系，
    包括依赖与冲突(也就是
    <code class="varname">Requires=</code> 与 <code class="varname">Conflicts=</code> 指令)，
    以及先后顺序(也就是 <code class="varname">After=</code> 与
    <code class="varname">Before=</code> 指令)。
    注意，
    上述两种类型的依赖关系(依赖与冲突、先后顺序)之间
    是相互独立的(无关的)。
    举例来说，假定 <code class="filename">foo.service</code>
    依赖于(Requires) <code class="filename">bar.service</code> 但并未指定先后顺序，
    那么这两个服务将被同时并行启动。
    不过在两个单元之间
    既存在依赖关系也存在先后顺序的情形也很常见。
    另外需要注意的是，
    大多数依赖关系都是由 systemd 隐式创建和维护的，
    因此没有必要额外手动创建它们。</p><p>应用程序和单元(透过依赖关系)可能会查询其他单元的状态变化。
    在 systemd 中，
    这种查询被包装为"任务"(job)并被作为"任务队列"进行管理。
    任务的执行结果可能成功也可能失败，
    但是任务的执行顺序是
    依照任务所属单元之间的先后顺序确定的。</p><p>在系统启动时，systemd 默认启动
    <code class="filename">default.target</code> 单元，
    该单元中应该包含所有你想在开机时默认启动的单元。
    但实际上，它通常只是一个指向
    <code class="filename">graphical.target</code> (图形界面)
    或 <code class="filename">multi-user.target</code>
    (命令行界面，常用于嵌入式或服务器环境，
    一般是 graphical.target 的一个子集)
    的符号连接。
    详见
    <a href="systemd.special.html#"><span class="citerefentry"><span class="refentrytitle">systemd.special</span>(7)</span></a>
    手册。</p><p>systemd 只在内存中加载最小化的一组单元。
    只有至少满足下列条件之一的单元，才会被加载到内存中：</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>处于 活动(active)、启动中(activating)、停止中(deactivating)、失败(failed) 状态之一(也就是停止(inactive)之外的状态)</p></li><li class="listitem"><p>至少有一个作业正在作业队列中</p></li><li class="listitem"><p>至少有一个其他已经加载到内存中的单元依赖于它</p></li><li class="listitem"><p>仍然占有某些资源
      (例如一个已停止的服务单元的进程忽略了终止请求，仍在逗留)</p></li><li class="listitem"><p>被 D-Bus 调用以程序化的方式固定到了内存中</p></li></ol></div><p>只要有需要，systemd 就会自动从磁盘加载所需的单元。
    因此实际上用户并不能显而易见的看到某个单元是否已被加载到内存。
    使用 <span class="command"><strong>systemctl list-units --all</strong></span> 命令可以显示当前已加载到内存中的所有单元。
    不满足加载条件(见上文)的单元会被立即从内存中卸载，并且它的记帐数据(accounting data)也会被清空。
    不过，因为每当一个单元关闭时，都会生成一条日志记录声明该单元所消耗的资源，
    所以这些数据通常不会彻底消失。</p><p>systemd 依赖于
    内核提供的
    <a class="ulink" href="https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt" target="_top">cgroups.txt</a>
    特性控制进程的派生，
    从而确保可以追踪到所有子进程。
    cgroups 信息由内核负责维护，
    并且可以通过
    <code class="filename">/sys/fs/cgroup/systemd/</code> 接口进行访问。此外，还可以通过
    <a href="systemd-cgls.html#"><span class="citerefentry"><span class="refentrytitle">systemd-cgls</span>(1)</span></a>
    或
    <a href="http://man7.org/linux/man-pages/man1/ps.1.html"><span class="citerefentry"><span class="refentrytitle">ps</span>(1)</span></a>
    之类的工具
    进行查看
    (<span class="command"><strong>ps xawf -eo pid,user,cgroup,args</strong></span>)</p><p>systemd 几乎完全兼容
    传统的 SysV init 系统：
    SysV init 脚本可以作为另一种配置文件格式被识别；
    提供与 SysV 兼容的
    <code class="filename">/dev/initctl</code> 接口；
    提供各种 SysV 工具的兼容实现；
    依然兼容例如 <code class="filename">/etc/fstab</code> 或者
    <code class="filename">utmp</code> 之类传统的 Unix 特性。</p><p>systemd 还有一个
    小型的事务系统：
    如果要启动或关闭一个单元，
    那么该单元所依赖的
    所有其他单元
    都会被一起加入到
    同一个临时事务中。
    这样，
    就可以校验整个事务的一致性，
    也就是检查是否存在循环依赖。
    如果存在循环依赖，
    那么 systemd 将会尝试通过
    去掉弱依赖(want)
    来解决这个问题，
    如果最终实在无法解决循环依赖的问题，
    那么 systemd 将会报错。</p><p>注意，
    因为事务的生成独立于单元的状态，
    所以，
    即使启动一个
    已经处于活动(active)状态的单元，
    也仍然会生成一个事务，
    并启动任何非活动的依赖单元，
    而且还会更进一步追随依赖关系，
    导致
    启动其他被依赖的非活动单元。</p><p>systemd 内置了许多
    系统启动过程中必需的操作，
    例如，设置 hostname 以及配置 loopback 网络设备，
    以及挂载
    <code class="filename">/sys</code> 和 <code class="filename">/proc</code> 文件系统。</p><p>想要了解更多有关
    设计 systemd 系统背后的思想，可以看看
    <a class="ulink" href="http://0pointer.de/blog/projects/systemd.html" target="_top">Original Design Document</a> 文档。</p><p>想要了解 systemd 提供的某些编程接口，
    可以看看
    <a class="ulink" href="https://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise" target="_top">Interface
    Stability Promise</a> 文档。</p><p>在系统启动或者执行
    <span class="command"><strong>systemctl reload …</strong></span> 时，
    systemd 可以根据其他配置文件或者内核引导选项动态生成单元，参见
    <a href="systemd.generator.html#"><span class="citerefentry"><span class="refentrytitle">systemd.generator</span>(7)</span></a> 手册。</p><p>如果要从容器或 initrd 中调用 systemd
    那么必须遵守
    <a class="ulink" href="https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface" target="_top">Container Interface</a> 或
    <a class="ulink" href="https://www.freedesktop.org/wiki/Software/systemd/InitrdInterface" target="_top">initrd Interface</a>
    规范。</p></div><div class="refsect1"><a name="id-1.8"></a><h2 id="目录">目录<a class="headerlink" title="Permalink to this headline" href="systemd.html#%E7%9B%AE%E5%BD%95">¶</a></h2><div class="variablelist"><dl class="variablelist"><dt id="系统单元目录"><span class="term">系统单元目录</span><a class="headerlink" title="Permalink to this term" href="systemd.html#%E7%B3%BB%E7%BB%9F%E5%8D%95%E5%85%83%E7%9B%AE%E5%BD%95">¶</a></dt><dd><p>systemd 会从
        多个优先级不同的系统单元目录中读取系统单元，
        软件包应该将系统单元文件
        安装在 <span class="command"><strong>pkg-config systemd --variable=systemdsystemunitdir</strong></span>
        命令所返回的系统单元目录中(通常是 <code class="filename">/usr/lib/systemd/system</code>)。
        此外，systemd 还会读取优先级较高的 <code class="filename">/usr/local/lib/systemd/system</code>
        目录以及优先级较低的 <code class="filename">/usr/lib/systemd/system</code>
        目录中的系统单元文件。
        优先级最高的系统单元目录是 <span class="command"><strong>pkg-config systemd --variable=systemdsystemconfdir</strong></span>
        命令所返回的目录(通常是 <code class="filename">/etc/systemd/system</code>)。
        注意，
        软件包应该
        仅使用
        <a href="systemctl.html#"><span class="citerefentry"><span class="refentrytitle">systemctl</span>(1)</span></a>
        的 <span class="command"><strong>enable</strong></span> 与 <span class="command"><strong>disable</strong></span> 命令修改上述目录中的内容。完整的目录列表参见
        <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a> 手册。
        </p></dd></dl></div><div class="variablelist"><dl class="variablelist"><dt id="用户单元目录"><span class="term">用户单元目录</span><a class="headerlink" title="Permalink to this term" href="systemd.html#%E7%94%A8%E6%88%B7%E5%8D%95%E5%85%83%E7%9B%AE%E5%BD%95">¶</a></dt><dd><p>用户单元目录所遵守的规则与系统单元目录类似，
        软件包应该将用户单元文件安装在
        <span class="command"><strong>pkg-config systemd --variable=systemduserunitdir</strong></span>
        命令所返回的用户单元目录中(通常是<code class="filename">/usr/lib/systemd/user</code>)。
        此外，因为用户单元目录还遵守 <a class="ulink" href="https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html" target="_top">XDG Base Directory specification</a> 规范，
        所以 systemd 还会读取 <code class="filename">$XDG_DATA_HOME/systemd/user</code>(仅在已设置 $XDG_DATA_HOME 的情况下) 或
        <code class="filename">~/.local/share/systemd/user</code>(仅在未设置 $XDG_DATA_HOME 的情况下) 目录中的用户单元。
        全局用户单元目录(针对所有用户)是
        <span class="command"><strong>pkg-config systemd --variable=systemduserconfdir</strong></span>
        命令所返回的目录(通常是<code class="filename">/etc/systemd/user</code>)。
        注意，软件包应该仅使用
        <a href="systemctl.html#"><span class="citerefentry"><span class="refentrytitle">systemctl</span>(1)</span></a>
        的 <span class="command"><strong>enable</strong></span> 与 <span class="command"><strong>disable</strong></span> 命令修改上述目录中的内容。
        无论这种修改是全局的(针对所有用户)、还是私有的(针对单个用户)。
        完整的目录列表参见
        <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a> 手册。
        </p></dd></dl></div><div class="variablelist"><dl class="variablelist"><dt id="SysV启动脚本目录(不同发行版之间差别可能很大)"><span class="term">SysV启动脚本目录(不同发行版之间差别可能很大)</span><a class="headerlink" title="Permalink to this term" href="systemd.html#SysV%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC%E7%9B%AE%E5%BD%95(%E4%B8%8D%E5%90%8C%E5%8F%91%E8%A1%8C%E7%89%88%E4%B9%8B%E9%97%B4%E5%B7%AE%E5%88%AB%E5%8F%AF%E8%83%BD%E5%BE%88%E5%A4%A7)">¶</a></dt><dd><p>如果 systemd
        找不到指定服务所对应的单元文件，
        那么就会到SysV启动脚本目录中
        去寻找同名脚本(去掉
        <code class="filename">.service</code>
        后缀)。</p></dd></dl></div><div class="variablelist"><dl class="variablelist"><dt id="SysV运行级目录(不同发行版之间差别可能很大)"><span class="term">SysV运行级目录(不同发行版之间差别可能很大)</span><a class="headerlink" title="Permalink to this term" href="systemd.html#SysV%E8%BF%90%E8%A1%8C%E7%BA%A7%E7%9B%AE%E5%BD%95(%E4%B8%8D%E5%90%8C%E5%8F%91%E8%A1%8C%E7%89%88%E4%B9%8B%E9%97%B4%E5%B7%AE%E5%88%AB%E5%8F%AF%E8%83%BD%E5%BE%88%E5%A4%A7)">¶</a></dt><dd><p>systemd 在决定
        是否启用一个服务的时候，
        会参照SysV运行级目录对该服务的设置。
        注意，
        这个规则不适用于那些
        已经拥有原生单元文件的服务。</p></dd></dl></div></div><div class="refsect1"><a name="id-1.9"></a><h2 id="信号">信号<a class="headerlink" title="Permalink to this headline" href="systemd.html#%E4%BF%A1%E5%8F%B7">¶</a></h2><div class="variablelist"><dl class="variablelist"><dt id="SIGTERM"><span class="term"><code class="constant">SIGTERM</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGTERM">¶</a></dt><dd><p>systemd 系统实例将会保存其当前状态，
        然后重新执行它自身，再恢复到先前保存的状态。
        基本上相当于
        执行 <span class="command"><strong>systemctl daemon-reexec</strong></span> 命令。</p><p>systemd 用户实例将会启动
        <code class="filename">exit.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl
        --user start exit.target
        --job-mode=replace-irreversible</strong></span> 命令。</p></dd><dt id="SIGINT"><span class="term"><code class="constant">SIGINT</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGINT">¶</a></dt><dd><p>systemd 系统实例将会启动
        <code class="filename">ctrl-alt-del.target</code> 单元。基本上相当于执行
        <span class="command"><strong>systemctl start ctrl-alt-del.target --job-mode=replace-irreversible</strong></span> 命令。
        在控制台上按
        <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>Del</strong></span>
        组合键即可触发这个信号。
        但是，如果在2秒内连续收到超过7次这个信号，那么将会不顾一切的立即强制重启。
        因此，如果系统在重启过程中僵死，那么可以通过在2秒内快速连按7次
         <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>Del</strong></span> 组合键来强制立即重启。</p><p>systemd 用户实例处理此信号的方式与
        <code class="constant">SIGTERM</code> 相同。</p></dd><dt id="SIGWINCH"><span class="term"><code class="constant">SIGWINCH</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGWINCH">¶</a></dt><dd><p>systemd 系统实例
        将会启动
        <code class="filename">kbrequest.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl start
        kbrequest.target</strong></span> 命令。</p><p>systemd 用户实例将会
        完全忽略此信号。</p></dd><dt id="SIGPWR"><span class="term"><code class="constant">SIGPWR</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGPWR">¶</a></dt><dd><p>systemd 将会
        启动 <code class="filename">sigpwr.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl start
        sigpwr.target</strong></span> 命令。</p></dd><dt id="SIGUSR1"><span class="term"><code class="constant">SIGUSR1</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGUSR1">¶</a></dt><dd><p>systemd 将会尝试
        重新连接到 D-Bus
        总线。</p></dd><dt id="SIGUSR2"><span class="term"><code class="constant">SIGUSR2</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGUSR2">¶</a></dt><dd><p>systemd 将会以人类易读的格式
        将其完整的状态记录到日志中。
        日期的格式与
        <span class="command"><strong>systemd-analyze dump</strong></span> 的输出格式相同。</p></dd><dt id="SIGHUP"><span class="term"><code class="constant">SIGHUP</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGHUP">¶</a></dt><dd><p>重新加载守护进程的配置文件。
        基本上相当于执行 <span class="command"><strong>systemctl
        daemon-reload</strong></span> 命令。</p></dd><dt id="SIGRTMIN+0"><span class="term"><code class="constant">SIGRTMIN+0</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+0">¶</a></dt><dd><p>进入默认模式，启动
        <code class="filename">default.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl isolate
        default.target</strong></span> 命令。</p></dd><dt id="SIGRTMIN+1"><span class="term"><code class="constant">SIGRTMIN+1</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+1">¶</a></dt><dd><p>进入救援模式，启动
        <code class="filename">rescue.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl isolate
        rescue.target</strong></span> 命令。</p></dd><dt id="SIGRTMIN+2"><span class="term"><code class="constant">SIGRTMIN+2</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+2">¶</a></dt><dd><p>进入紧急维修模式，启动
        <code class="filename">emergency.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl isolate
        emergency.target</strong></span> 命令。</p></dd><dt id="SIGRTMIN+3"><span class="term"><code class="constant">SIGRTMIN+3</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+3">¶</a></dt><dd><p>关闭系统，启动
        <code class="filename">halt.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl start halt.target
        --job-mode=replace-irreversible</strong></span> 命令。</p></dd><dt id="SIGRTMIN+4"><span class="term"><code class="constant">SIGRTMIN+4</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+4">¶</a></dt><dd><p>关闭系统并切断电源，启动
        <code class="filename">poweroff.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl start poweroff.target
        --job-mode=replace-irreversible</strong></span> 命令。</p></dd><dt id="SIGRTMIN+5"><span class="term"><code class="constant">SIGRTMIN+5</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+5">¶</a></dt><dd><p>重新启动，启动
        <code class="filename">reboot.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl start reboot.target
        --job-mode=replace-irreversible</strong></span> 命令。</p></dd><dt id="SIGRTMIN+6"><span class="term"><code class="constant">SIGRTMIN+6</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+6">¶</a></dt><dd><p>通过内核的 kexec 接口重新启动，启动
        <code class="filename">kexec.target</code> 单元。
        基本上相当于执行 <span class="command"><strong>systemctl start kexec.target
        --job-mode=replace-irreversible</strong></span> 命令。</p></dd><dt id="SIGRTMIN+13"><span class="term"><code class="constant">SIGRTMIN+13</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+13">¶</a></dt><dd><p>立即关闭机器</p></dd><dt id="SIGRTMIN+14"><span class="term"><code class="constant">SIGRTMIN+14</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+14">¶</a></dt><dd><p>立即关闭机器并切断电源</p></dd><dt id="SIGRTMIN+15"><span class="term"><code class="constant">SIGRTMIN+15</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+15">¶</a></dt><dd><p>立即重新启动</p></dd><dt id="SIGRTMIN+16"><span class="term"><code class="constant">SIGRTMIN+16</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+16">¶</a></dt><dd><p>立即通过内核的 kexec 接口重新启动</p></dd><dt id="SIGRTMIN+20"><span class="term"><code class="constant">SIGRTMIN+20</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+20">¶</a></dt><dd><p>在控制台上显示状态消息。
        相当于使用
        <code class="varname">systemd.show_status=1</code>
        内核引导选项。</p></dd><dt id="SIGRTMIN+21"><span class="term"><code class="constant">SIGRTMIN+21</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+21">¶</a></dt><dd><p>禁止
        在控制台上显示状态消息。
        相当于使用
        <code class="varname">systemd.show_status=0</code>
        内核引导选项
        。</p></dd><dt id="SIGRTMIN+22"><span class="term"><code class="constant">SIGRTMIN+22</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+22">¶</a></dt><dd><p>将日志等级设为 "<code class="literal">debug</code>" ，等价于设置
        <code class="varname">systemd.log_level=debug</code> 内核引导参数。</p></dd><dt id="SIGRTMIN+23"><span class="term"><code class="constant">SIGRTMIN+23</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+23">¶</a></dt><dd><p>重置日志等级为配置值。配置值按下列顺序依次获取(找到即停)：
        <code class="varname">systemd.log-level=</code> 内核引导参数、
        配置文件中的 <code class="option">LogLevel=</code> 选项、
        内置默认值 "<code class="literal">info</code>"</p></dd><dt id="SIGRTMIN+24"><span class="term"><code class="constant">SIGRTMIN+24</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+24">¶</a></dt><dd><p>立即退出 systemd 用户实例(也就是
        仅对 --user 实例有效)。</p></dd><dt id="SIGRTMIN+26"><span class="term"><code class="constant">SIGRTMIN+26</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+26">¶</a></dt><dd><p>重置日志目标为配置值。配置值按下列顺序依次获取(找到即停)：
        <code class="varname">systemd.log-target=</code> 内核引导参数、
        配置文件中的 <code class="option">LogTarget=</code> 选项、
        内置默认值。</p></dd><dt id="SIGRTMIN+27"><span class="term"><code class="constant">SIGRTMIN+27</code>, </span><span class="term"><code class="constant">SIGRTMIN+28</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#SIGRTMIN+27">¶</a></dt><dd><p>将日志目标设为 "<code class="literal">console</code>"(<code class="constant">SIGRTMIN+27</code>) 或
        "<code class="literal">kmsg</code>"(<code class="constant">SIGRTMIN+28</code>)。相当于使用
        <code class="varname">systemd.log_target=console</code>(<code class="constant">SIGRTMIN+27</code>) 或
         <code class="varname">systemd.log_target=kmsg</code>(<code class="constant">SIGRTMIN+28</code>) 内核引导参数。</p></dd></dl></div></div><div class="refsect1"><a name="id-1.10"></a><h2 id="环境变量">环境变量<a class="headerlink" title="Permalink to this headline" href="systemd.html#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F">¶</a></h2><div class="variablelist"><dl class="variablelist"><dt id="$SYSTEMD_LOG_LEVEL"><span class="term"><code class="varname">$SYSTEMD_LOG_LEVEL</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_LOG_LEVEL">¶</a></dt><dd><p>systemd 日志等级。
        可以被
        <code class="option">--log-level=</code> 选项覆盖。</p></dd><dt id="$SYSTEMD_LOG_TARGET"><span class="term"><code class="varname">$SYSTEMD_LOG_TARGET</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_LOG_TARGET">¶</a></dt><dd><p>systemd 日志目标。
        可以被
        <code class="option">--log-target=</code> 选项覆盖。</p></dd><dt id="$SYSTEMD_LOG_COLOR"><span class="term"><code class="varname">$SYSTEMD_LOG_COLOR</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_LOG_COLOR">¶</a></dt><dd><p>systemd 是否应该高亮重要的日志信息。
        可以被
        <code class="option">--log-color=</code> 选项覆盖。</p></dd><dt id="$SYSTEMD_LOG_LOCATION"><span class="term"><code class="varname">$SYSTEMD_LOG_LOCATION</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_LOG_LOCATION">¶</a></dt><dd><p>systemd 是否应该在日志信息中包含代码位置(code location)。
        可以被
        <code class="option">--log-location=</code> 选项覆盖。</p></dd><dt id="$XDG_CONFIG_HOME"><span class="term"><code class="varname">$XDG_CONFIG_HOME</code>, </span><span class="term"><code class="varname">$XDG_CONFIG_DIRS</code>, </span><span class="term"><code class="varname">$XDG_DATA_HOME</code>, </span><span class="term"><code class="varname">$XDG_DATA_DIRS</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24XDG_CONFIG_HOME">¶</a></dt><dd><p>systemd 用户实例
        根据 <a class="ulink" href="https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html" target="_top">XDG
        Base Directory specification</a> 规范使用这些变量
        来查找用户配置。</p></dd><dt id="$SYSTEMD_UNIT_PATH"><span class="term"><code class="varname">$SYSTEMD_UNIT_PATH</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_UNIT_PATH">¶</a></dt><dd><p>单元目录
        </p></dd><dt id="$SYSTEMD_SYSVINIT_PATH"><span class="term"><code class="varname">$SYSTEMD_SYSVINIT_PATH</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_SYSVINIT_PATH">¶</a></dt><dd><p>SysV
        启动脚本目录</p></dd><dt id="$SYSTEMD_SYSVRCND_PATH"><span class="term"><code class="varname">$SYSTEMD_SYSVRCND_PATH</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_SYSVRCND_PATH">¶</a></dt><dd><p>SysV
        运行级目录</p></dd><dt id="$SYSTEMD_COLORS"><span class="term"><code class="varname">$SYSTEMD_COLORS</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_COLORS">¶</a></dt><dd><p>是否使用彩色显示输出内容。
        必须设为一个布尔值。明确设置此环境变量将会覆盖 <span class="command"><strong>systemd</strong></span>
        根据 <code class="varname">$TERM</code> 变量的值以及所连接的控制台自动作出的判断。</p></dd><dt id="$SYSTEMD_URLIFY"><span class="term"><code class="varname">$SYSTEMD_URLIFY</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24SYSTEMD_URLIFY">¶</a></dt><dd><p>一个布尔值。是否在支持超链接的终端上输出可点击链接。
        可以强制指定此变量来取代
        <span class="command"><strong>systemd</strong></span> 基于 <code class="varname">$TERM</code> 和其他条件做出的判断。</p></dd><dt id="$LISTEN_PID"><span class="term"><code class="varname">$LISTEN_PID</code>, </span><span class="term"><code class="varname">$LISTEN_FDS</code>, </span><span class="term"><code class="varname">$LISTEN_FDNAMES</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24LISTEN_PID">¶</a></dt><dd><p>在基于套接字启动的过程中由 systemd 设置此变量，
        以供管理程序使用。详见
        <a href="http://www.jinbuguo.com/systemd/sd_listen_fds.html#"><span class="citerefentry"><span class="refentrytitle">sd_listen_fds</span>(3)</span></a>
        手册。</p></dd><dt id="$NOTIFY_SOCKET"><span class="term"><code class="varname">$NOTIFY_SOCKET</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#%24NOTIFY_SOCKET">¶</a></dt><dd><p>由 systemd 设置此变量，
        以报告状态以及提供启动完毕的通知，以供管理程序使用。详见
        <a href="http://www.jinbuguo.com/systemd/sd_notify.html#"><span class="citerefentry"><span class="refentrytitle">sd_notify</span>(3)</span></a>
        手册。</p></dd></dl></div><p>若想了解更多 systemd 及其组件可以识别的环境变量，可以查看 <a class="ulink" href="https://systemd.io/ENVIRONMENT" target="_top">Known Environment Variables</a></p></div><div class="refsect1"><a name="id-1.11"></a><h2 id="内核引导选项">内核引导选项<a class="headerlink" title="Permalink to this headline" href="systemd.html#%E5%86%85%E6%A0%B8%E5%BC%95%E5%AF%BC%E9%80%89%E9%A1%B9">¶</a></h2><p>当作为系统实例运行的时候，
    systemd 能够接受下面列出的内核引导选项。<a href="systemd.html#ftn.id-1.11.2.1" class="footnote" name="id-1.11.2.1"><sup class="footnote">[1]</sup></a></p><div class="variablelist"><dl class="variablelist"><dt id="systemd.unit="><span class="term"><code class="varname">systemd.unit=</code>, </span><span class="term"><code class="varname">rd.systemd.unit=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.unit=">¶</a></dt><dd><p>设置默认启动的单元。
        默认值是 <code class="filename">default.target</code> 。
        可用于临时修改启动目标(例如
        <code class="filename">rescue.target</code> 或
        <code class="filename">emergency.target</code> )。详情参见
        <a href="systemd.special.html#"><span class="citerefentry"><span class="refentrytitle">systemd.special</span>(7)</span></a>
        手册。
        有 "<code class="literal">rd.</code>" 前缀的参数专用于 initrd(initial RAM disk)
        环境，而无前缀的参数则用于
        常规环境。</p></dd><dt id="systemd.dump_core"><span class="term"><code class="varname">systemd.dump_core</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.dump_core">¶</a></dt><dd><p>既可以明确设为一个布尔值，也可以仅使用此选项而不设置任何参数(相当于设为 yes )。
        设为 yes 表示 systemd(PID=1) 将会在崩溃时进行内存转储，否则不进行任何转储。
        默认值是 yes 。</p></dd><dt id="systemd.crash_chvt"><span class="term"><code class="varname">systemd.crash_chvt</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.crash_chvt">¶</a></dt><dd><p>既可以明确设为一个布尔值，也可以明确设为一个 1-63 之间的整数，
        还可以仅使用此选项而不设置任何参数(相当于设为 yes )。
        设为整数表示 systemd(PID=1) 将在崩溃时切换到指定编号的虚拟控制台；
        设为 yes 表示切换到内核消息所使用的虚拟控制台；
        设为 no 表示不切换到任何虚拟控制台。
        默认值是 no 。
        </p></dd><dt id="systemd.crash_shell"><span class="term"><code class="varname">systemd.crash_shell</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.crash_shell">¶</a></dt><dd><p>既可以明确设为一个布尔值，也可以仅使用此选项而不设置任何参数(相当于设为 yes )。
        设为 yes 表示 systemd(PID=1) 将在自身崩溃10秒后启动一个 shell ；
        默认值 no 表示即使崩溃也不启动任何 shell 。
        由于被启动的 shell 不需要任何密码认证，
        所以使用这个特性时需要注意其带来的安全隐患。</p></dd><dt id="systemd.crash_reboot"><span class="term"><code class="varname">systemd.crash_reboot</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.crash_reboot">¶</a></dt><dd><p>既可以明确设为一个布尔值，
        也可以仅使用此选项而不设置任何参数(相当于设为 yes )。
        设为 yes 表示 systemd(PID=1) 将在自身崩溃10秒后自动重启整个系统；
        默认值 no 表示即使崩溃也不重启(无限制的死在那里)，这样可以避免进入循环重启。
        如果与 <code class="varname">systemd.crash_shell</code> 一起使用，
        那么系统将在退出 shell 之后重启。</p></dd><dt id="systemd.confirm_spawn"><span class="term"><code class="varname">systemd.confirm_spawn</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.confirm_spawn">¶</a></dt><dd><p>既可以明确设为一个布尔值，
        也可以明确设为一个虚拟控制台设备，
        还可以仅使用此选项而不设置任何参数(相当于设为 yes )。
        设为 yes 表示 systemd(PID=1) 在使用 <code class="option">/dev/console</code> 派生新进程时必须进行确认提示。
        默认值 no 表示不作任何提示。
        若设为一个控制台设备的路径或者名称(例如"<code class="literal">ttyS0</code>")，
        则表示仅在这些指定的设备上派生新进程时，才会显示确认提示信息。
        </p></dd><dt id="systemd.service_watchdogs="><span class="term"><code class="varname">systemd.service_watchdogs=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.service_watchdogs=">¶</a></dt><dd><p>接受一个布尔值。
        设为 no 表示禁用所有服务的运行时看门狗(<code class="option">WatchdogSec=</code>) 以及紧急动作(例如
        <code class="option">OnFailure=</code> 或 <code class="option">StartLimitAction=</code>)。
        详见
        <a href="systemd.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd.service</span>(5)</span></a> 手册。
        默认值为 yes (开启看门狗与紧急动作)。
        注意，这里的"看门狗"与硬件看门狗无关，
        此选项也不影响硬件看门狗。</p></dd><dt id="systemd.show_status"><span class="term"><code class="varname">systemd.show_status</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.show_status">¶</a></dt><dd><p>用于设置是否显示单元状态信息。
        既可以明确设为一个布尔值，也可以明确设为特殊值 <code class="constant">auto</code>，
        还可以仅使用此选项而不设置任何参数(相当于设为 yes )。
        设为 yes 表示在系统启动与关闭的过程中，在控制台上显示简明的单元状态信息。
        设为 no 表示不显示这些信息。
        <code class="constant">auto</code> 与 no 类似，不同之处在于，
        一旦遇见单元失败或启动流程出现重大延迟，立即自动切换为 yes 设置。
        当使用了内核引导选项 <code class="option">quiet</code> 时，此选项的默认值是 <code class="constant">auto</code> ，否则默认值是 yes 。
        此选项将会覆盖 systemd 配置文件中 <code class="option">ShowStatus=</code> 的设置，参见
        <a href="systemd-system.conf.html#"><span class="citerefentry"><span class="refentrytitle">systemd-system.conf</span>(5)</span></a> 手册。
        注意，命令行选项 <code class="option">--show-status=</code> 的优先级最高，
        它会覆盖内核引导选项
        以及 systemd 配置文件中的设置。</p></dd><dt id="systemd.log_target="><span class="term"><code class="varname">systemd.log_target=</code>, </span><span class="term"><code class="varname">systemd.log_level=</code>, </span><span class="term"><code class="varname">systemd.log_location=</code>, </span><span class="term"><code class="varname">systemd.log_color</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.log_target=">¶</a></dt><dd><p>用于控制日志输出，含义与之前的
        <code class="varname">$SYSTEMD_LOG_TARGET</code>,
        <code class="varname">$SYSTEMD_LOG_LEVEL</code>,
        <code class="varname">$SYSTEMD_LOG_LOCATION</code>,
        <code class="varname">$SYSTEMD_LOG_COLOR</code> 环境变量相同。
        直接使用 <code class="varname">systemd.log_color</code> 而不设置任何参数，
        相当于明确将其设为 yes 。</p></dd><dt id="systemd.default_standard_output="><span class="term"><code class="varname">systemd.default_standard_output=</code>, </span><span class="term"><code class="varname">systemd.default_standard_error=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.default_standard_output=">¶</a></dt><dd><p>设置服务的默认标准输出与标准错误，
        含义与相应的
        <code class="option">--default-standard-output=</code> 和
        <code class="option">--default-standard-error=</code>
        命令行选项相同。</p></dd><dt id="systemd.setenv="><span class="term"><code class="varname">systemd.setenv=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.setenv=">¶</a></dt><dd><p>接受
        VARIABLE=VALUE 格式的字符串，
        可用于为派生的子进程设置默认环境变量。
        可以多次使用以设置多个变量。</p></dd><dt id="systemd.machine_id="><span class="term"><code class="varname">systemd.machine_id=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.machine_id=">¶</a></dt><dd><p>接受一个32字符表示的16进制值，
        用作该主机的 machine-id 。
        主要用于网络启动，以确保每次启动都能得到相同的 machine-id
        值。</p></dd><dt id="systemd.unified_cgroup_hierarchy"><span class="term"><code class="varname">systemd.unified_cgroup_hierarchy</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.unified_cgroup_hierarchy">¶</a></dt><dd><p>设置
        是否使用单一层次资源控制接口(<a class="ulink" href="https://www.kernel.org/doc/Documentation/cgroup-v2.txt" target="_top">cgroups-v2</a>)。
        既可以明确设为一个布尔值，也可以仅使用此选项而不设置任何参数(相当于设为 yes )。
        设为 yes 表示明确仅使用新式的 cgroups-v2 ，
        设为 no 表示当 cgroups-v2 不可用时可以回退到使用 cgroups-v1 (也就是可以混合使用 v1 与 v2)。</p><p>此选项的默认值取决于编译时的
          <code class="option">-Ddefault-hierarchy=</code> meson 设置。
        如果内核版本低于Linux-4.5(完全不支持 v2)，
        那么将无条件的完全使用 cgroups-v1 (无视此处的设置)。</p></dd><dt id="systemd.legacy_systemd_cgroup_controller"><span class="term"><code class="varname">systemd.legacy_systemd_cgroup_controller</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#systemd.legacy_systemd_cgroup_controller">¶</a></dt><dd><p>此选项仅在上一个选项值为 no 时有意义。
        既可以明确设为一个布尔值，
        也可以仅使用此选项而不设置任何参数(相当于设为 yes )。
        设为 yes 表示
        禁止混合使用 cgroups-v1 与 cgroups-v2 ，
        也就是必须完全仅仅使用老旧的 cgroups-v1 。
        设为 no 表示
        允许混合使用 cgroups-v1 与 cgroups-v2 。</p><p>此选项的默认值取决于编译时的
        <code class="option">-Ddefault-hierarchy=</code> meson 设置。
        如果内核版本低于Linux-4.5(完全不支持 v2)，
        那么将无条件的完全使用 cgroups-v1 (无视此处的设置)。</p></dd><dt id="quiet"><span class="term"><code class="varname">quiet</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#quiet">¶</a></dt><dd><p>关闭启动过程中的状态输出。相当于
        <code class="varname">systemd.show_status=no</code> 的效果。
        注意，因为此选项也同样被内核所识别，
        并用于禁止输出内核日志，
        所以使用此选项会导致同时关闭内核与 systemd 的输出。
        </p></dd><dt id="debug"><span class="term"><code class="varname">debug</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#debug">¶</a></dt><dd><p>开启调试输出，
        等价于设置了 <code class="varname">systemd.log_level=debug</code> 。
        注意，因为此选项也同样被内核所识别，
        并用于开启内核的调试输出，
        所以使用此选项会导致
        同时开启内核与 systemd 的调试输出。</p></dd><dt id="emergency"><span class="term"><code class="varname">emergency</code>, </span><span class="term"><code class="varname">rd.emergency</code>, </span><span class="term"><code class="varname">-b</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#emergency">¶</a></dt><dd><p>启动到紧急维修模式。分别对应于
        <code class="varname">systemd.unit=emergency.target</code> 或
        <code class="varname">rd.systemd.unit=emergency.target</code>
        的快捷方式。</p></dd><dt id="rescue"><span class="term"><code class="varname">rescue</code>, </span><span class="term"><code class="varname">rd.rescue</code>, </span><span class="term"><code class="varname">single</code>, </span><span class="term"><code class="varname">s</code>, </span><span class="term"><code class="varname">S</code>, </span><span class="term"><code class="varname">1</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#rescue">¶</a></dt><dd><p>启动到救援模式。分别对应于
        <code class="varname">systemd.unit=rescue.target</code> 或
        <code class="varname">rd.systemd.unit=rescue.target</code>
        的快捷方式。</p></dd><dt id="2"><span class="term"><code class="varname">2</code>, </span><span class="term"><code class="varname">3</code>, </span><span class="term"><code class="varname">4</code>, </span><span class="term"><code class="varname">5</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#2">¶</a></dt><dd><p>启动到对应的 SysV 运行级。
        分别对应于
        <code class="varname">systemd.unit=runlevel2.target</code>,
        <code class="varname">systemd.unit=runlevel3.target</code>,
        <code class="varname">systemd.unit=runlevel4.target</code>,
        <code class="varname">systemd.unit=runlevel5.target</code>,
        的快捷方式，
        以简化输入。</p></dd><dt id="locale.LANG="><span class="term"><code class="varname">locale.LANG=</code>, </span><span class="term"><code class="varname">locale.LANGUAGE=</code>, </span><span class="term"><code class="varname">locale.LC_CTYPE=</code>, </span><span class="term"><code class="varname">locale.LC_NUMERIC=</code>, </span><span class="term"><code class="varname">locale.LC_TIME=</code>, </span><span class="term"><code class="varname">locale.LC_COLLATE=</code>, </span><span class="term"><code class="varname">locale.LC_MONETARY=</code>, </span><span class="term"><code class="varname">locale.LC_MESSAGES=</code>, </span><span class="term"><code class="varname">locale.LC_PAPER=</code>, </span><span class="term"><code class="varname">locale.LC_NAME=</code>, </span><span class="term"><code class="varname">locale.LC_ADDRESS=</code>, </span><span class="term"><code class="varname">locale.LC_TELEPHONE=</code>, </span><span class="term"><code class="varname">locale.LC_MEASUREMENT=</code>, </span><span class="term"><code class="varname">locale.LC_IDENTIFICATION=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#locale.LANG=">¶</a></dt><dd><p>设置相应的系统 locale ，
        会覆盖 <code class="filename">/etc/locale.conf</code> 中的设置。
        参见
        <a href="locale.conf.html#"><span class="citerefentry"><span class="refentrytitle">locale.conf</span>(5)</span></a>
        与
        <a href="http://man7.org/linux/man-pages/man7/locale.7.html"><span class="citerefentry"><span class="refentrytitle">locale</span>(7)</span></a> 手册。
        </p></dd></dl></div><p>更多内核引导选项的解释，
    参见
    <a href="kernel-command-line.html#"><span class="citerefentry"><span class="refentrytitle">kernel-command-line</span>(7)</span></a> 手册。</p></div><div class="refsect1"><a name="id-1.12"></a><h2 id="Sockets 与 FIFOs">Sockets 与 FIFOs<a class="headerlink" title="Permalink to this headline" href="systemd.html#Sockets%20%E4%B8%8E%20FIFOs">¶</a></h2><div class="variablelist"><dl class="variablelist"><dt id="/run/systemd/notify"><span class="term"><code class="filename">/run/systemd/notify</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#/run/systemd/notify">¶</a></dt><dd><p>通知守护进程状态的
         UNIX socket 文件，
        用于实现
        <a href="http://www.jinbuguo.com/systemd/sd_notify.html#"><span class="citerefentry"><span class="refentrytitle">sd_notify</span>(3)</span></a> 中实现的守护进程通知逻辑。</p></dd><dt id="/run/systemd/private"><span class="term"><code class="filename">/run/systemd/private</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#/run/systemd/private">¶</a></dt><dd><p>一个 UNIX socket 文件。
        仅用于
        <a href="systemctl.html#"><span class="citerefentry"><span class="refentrytitle">systemctl</span>(1)</span></a>
        与 systemd 进程
        之间的内部通信。
        其他进程
        不应该使用它。</p></dd><dt id="/dev/initctl"><span class="term"><code class="filename">/dev/initctl</code></span><a class="headerlink" title="Permalink to this term" href="systemd.html#/dev/initctl">¶</a></dt><dd><p>兼容传统 SysV
        的客户端接口(FIFO)(由
        <code class="filename">systemd-initctl.service</code>
        单元提供)。
        这是一个即将被废弃的接口，尽量不要使用它。</p></dd></dl></div></div><div class="refsect1"><a name="id-1.13"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="systemd.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
      <a class="ulink" href="https://www.freedesktop.org/wiki/Software/systemd/" target="_top">systemd Homepage</a>,
      <a href="systemd-system.conf.html#"><span class="citerefentry"><span class="refentrytitle">systemd-system.conf</span>(5)</span></a>,
      <a href="locale.conf.html#"><span class="citerefentry"><span class="refentrytitle">locale.conf</span>(5)</span></a>,
      <a href="systemctl.html#"><span class="citerefentry"><span class="refentrytitle">systemctl</span>(1)</span></a>,
      <a href="journalctl.html#"><span class="citerefentry"><span class="refentrytitle">journalctl</span>(1)</span></a>,
      <a href="systemd-notify.html#"><span class="citerefentry"><span class="refentrytitle">systemd-notify</span>(1)</span></a>,
      <a href="daemon.html#"><span class="citerefentry"><span class="refentrytitle">daemon</span>(7)</span></a>,
      <a href="http://www.jinbuguo.com/systemd/sd-daemon.html#"><span class="citerefentry"><span class="refentrytitle">sd-daemon</span>(3)</span></a>,
      <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a>,
      <a href="systemd.special.html#"><span class="citerefentry"><span class="refentrytitle">systemd.special</span>(5)</span></a>,
      <a href="https://linux.die.net/man/1/pkg-config"><span class="citerefentry"><span class="refentrytitle">pkg-config</span>(1)</span></a>,
      <a href="kernel-command-line.html#"><span class="citerefentry"><span class="refentrytitle">kernel-command-line</span>(7)</span></a>,
      <a href="bootup.html#"><span class="citerefentry"><span class="refentrytitle">bootup</span>(7)</span></a>,
      <a href="systemd.directives.html#"><span class="citerefentry"><span class="refentrytitle">systemd.directives</span>(7)</span></a>
    </p></div><div class="footnotes"><br><hr style="width:100; text-align:left;margin-left: 0"><div id="ftn.id-1.11.2.1" class="footnote"><p><a href="systemd.html#id-1.11.2.1" class="para"><sup class="para">[1] </sup></a>
    当 systemd 在 Linux 容器中运行的时候，
    这些参数可以直接在 systemd 命令行上传递(放置在所有命令行选项之后)，
    当 systemd 不在 Linux 容器中运行的时候，
    这些参数将从 <code class="filename">/proc/cmdline</code>
    中获取。</p></div></div></div></body></html>
